package com.arctic.coding.marvin.sensor;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

import cpm.arctic.coding.marvin.communication.BluetoothHandler;
import lejos.nxt.Battery;
import lejos.nxt.LCD;

/**
 * Klasse zum Managment der Batterie
 * 
 * Es wird davon ausgegangen, das ein 10 V Akku angeschlossen ist
 * 
 * @author ygraf
 *
 */
public class BatteryHandler extends Thread {
	
	public static final double maxVolate = 10.0;
	
	BufferedWriter buw;
	
	/**
	 * Errechnet die Batterieladung in Prozent und gibt diese zurueck
	 * 
	 * @return Batterieladung in Prozent
	 */
	public int getPercent() {
		return (int)(Battery.getVoltage()%maxVolate)*100;	
	}
	
	/**
	 * Schickt den Batteriestand als Marvin-Befehl zum NXTPhone
	 * 
	 * @param percent
	 * @throws IOException
	 */
	public void sendToNXTPhone(int percent) throws IOException {
		buw.write("marvin;b;"+percent);
		buw.flush();
	}
	
	@Override
	public void run() {
		
		try {
			
			buw = new BufferedWriter(new OutputStreamWriter(BluetoothHandler.getInstance().getOutputStream()));
						
			while (!this.isInterrupted()) {
				sendToNXTPhone(getPercent());
				Thread.sleep(5000);
				LCD.drawInt(getPercent(), 0, 0);
			}
		
			buw.close();
			
		} catch (Exception ex) {
			LCD.drawString(ex.getMessage(), 0, 3, true);
			LCD.drawString(""+ ex, 0, 4, true);		
		}
	}
	
}
